এই অ্যাপ্লিকেশনটিতে / ত্রুটির জন্য সুস্পষ্ট ম্যাপিং নেই


108

আমি মাভেন টিউটোরিয়ালটি https://spring.io/guides/gs/uploading-files/ করতে ব্যবহার করেছি আমার ব্যবহৃত
সমস্ত কোড অনুলিপি করা হয়েছিল।

অ্যাপ্লিকেশনটি চলতে পারে তবে আমি ত্রুটিটি পেয়েছি:

হোয়াইটবেল ত্রুটি পৃষ্ঠা এই অ্যাপ্লিকেশনটিতে / ত্রুটির জন্য কোনও স্পষ্ট ম্যাপিং নেই, তাই আপনি এটিকে ফ্যালব্যাক হিসাবে দেখছেন। মঙ্গল 30 জুন 17:24:02 সিএসটি 2015 একটি অপ্রত্যাশিত ত্রুটি ঘটেছে (টাইপ = পাওয়া যায়নি, স্থিতি = 404)। কোনও বার্তা উপলব্ধ নেই

আমি কীভাবে এটি ঠিক করতে পারি?


পোস্টে আপনার মন্তব্য যুক্ত - আপনি নিজেই এডিট করতে পারেন। আপনার নিজের পোস্টে মন্তব্য করার চেয়ে এটি আরও ভাল
আলেকজান্ডার

উত্তর:


137

আপনার ক্লাসটি অন্য শ্রেণীর চেয়েও মূল প্যাকেজে রয়েছে তা নিশ্চিত করুন।

আপনি যখন একটি স্প্রিং বুট অ্যাপ্লিকেশন চালান, (যেমন @ স্প্রিংবুট অ্যাপ্লিকেশন দিয়ে টীকায়িত একটি শ্রেণি), স্প্রিং কেবলমাত্র আপনার মূল শ্রেণীর প্যাকেজের নীচের ক্লাসগুলি স্ক্যান করবে।

com
   +- APP
         +- Application.java  <--- your main class should be here, above your controller classes
         |
         +- model
         |   +- user.java
         +- controller
             +- UserController.java

4
উপরে বা একই স্তরে?
মার্টিন এরলিক

21
আমি আমার জীবনের প্রায় 2 ঘন্টা এটি সন্ধানের জন্য ব্যয় করেছি!
রাকেশ

7
তাও চেষ্টা করেছিলেন। তবু ত্রুটি। কমপক্ষে মূল পৃষ্ঠাটি যেমন, লোকালহোস্ট: 8080 টমক্যাট হোমপেজটি আমাকে দেখায়, তাই না? তবে সেটিও প্রদর্শিত হচ্ছে না
জুলকরনাইন শাহ

ইঙ্গিতটির জন্য ধন্যবাদ। আমি একটি Elpipse ব্যবহারকারী ছিলাম এবং সেখানে এই কনফিগারেশনটির প্রয়োজন ছিল না তবে এখন আমি IntelliJ ব্যবহার করছি এবং এটি খুব আশাবাদী ছিল।
আর্মার বি

@ জুলকারনাইনশাহ সাধারণত টমক্যাট হোমপেজটি একটি ওয়ার দ্বারা উত্পাদিত হয় যা এখানে অন্তর্ভুক্ত নয়।
থরবজর্ন রাভন অ্যান্ডারসন

61

যখন আমরা একটি স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করি তখন আমরা এটিকে @SpringBootApplicationটীকা দিয়ে টিকিয়ে রাখি । এই টীকাটি অ্যাপ্লিকেশনটিতে কাজ করার জন্য আরও অনেক প্রয়োজনীয় টিকা 'র‌্যাপ আপ' করে। এ জাতীয় একটি টিকা @ComponentScanot এই টীকাটি বসন্তকে বসন্তের উপাদানগুলির সন্ধান করতে এবং অ্যাপ্লিকেশনটি চালনার জন্য কনফিগার করতে বলে tells

আপনার অ্যাপ্লিকেশন বর্গটি আপনার প্যাকেজ শ্রেণিবিন্যাসের শীর্ষে হওয়া দরকার, যাতে স্প্রিং উপ-প্যাকেজগুলি স্ক্যান করতে এবং অন্যান্য প্রয়োজনীয় উপাদানগুলি সন্ধান করতে পারে।

package com.test.spring.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

কোড নিচে স্নিপেট কাজ করে যেমন নিয়ামক প্যাকেজ বয়সী com.test.spring.bootপ্যাকেজ

package com.test.spring.boot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

    @RequestMapping("/")
    public String home(){
        return "Hello World!";
    }
}

নিচের কোড স্নিপেট কাজ করে না নিয়ামক প্যাকেজ হিসাবে অধীনে নয় com.test.spring.bootপ্যাকেজ

package com.test.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {

     @RequestMapping("/")
     public String home(){
         return "Hello World!";
     }
 }

স্প্রিং বুট ডকুমেন্টেশন থেকে:

অনেক বসন্ত বুট ডেভেলপারদের সবসময় তাদের প্রধান বর্গ সঙ্গে সটীক আছে @Configuration, @EnableAutoConfigurationএবং @ComponentScan। যেহেতু এই টীকাগুলি প্রায়শই একসাথে ব্যবহৃত হয় (বিশেষত যদি আপনি উপরের সেরা অনুশীলনগুলি অনুসরণ করেন), স্প্রিং বুট একটি সুবিধাজনক @SpringBootApplicationবিকল্প সরবরাহ করে।

@SpringBootApplicationটীকা ব্যবহার সমতূল্য @Configuration, @EnableAutoConfigurationএবং @ComponentScanতাদের ডিফল্ট বৈশিষ্ট্যাবলী সঙ্গে


3
খুব সুন্দর ব্যাখ্যা। আপনাকে ধন্যবাদ
লোভা চিত্তুমুরি

39

আপনি ErrorControllerআপনার অ্যাপ্লিকেশনটিতে একটি যুক্ত করে এটি সমাধান করতে পারেন । আপনার ত্রুটি নিয়ামক আপনার প্রয়োজন মতামত ফিরিয়ে দিতে পারেন।

আমার অ্যাপ্লিকেশনটিতে ত্রুটি নিয়ন্ত্রণকারী নীচের মত দেখাচ্ছে:

import org.springframework.boot.autoconfigure.web.ErrorAttributes;
import org.springframework.boot.autoconfigure.web.ErrorController;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * Basic Controller which is called for unhandled errors
 */
@Controller
public class AppErrorController implements ErrorController{

    /**
     * Error Attributes in the Application
     */
    private ErrorAttributes errorAttributes;

    private final static String ERROR_PATH = "/error";

    /**
     * Controller for the Error Controller
     * @param errorAttributes
     */
    public AppErrorController(ErrorAttributes errorAttributes) {
        this.errorAttributes = errorAttributes;
    }

    /**
     * Supports the HTML Error View
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH, produces = "text/html")
    public ModelAndView errorHtml(HttpServletRequest request) {
        return new ModelAndView("/errors/error", getErrorAttributes(request, false));
    }

    /**
     * Supports other formats like JSON, XML
     * @param request
     * @return
     */
    @RequestMapping(value = ERROR_PATH)
    @ResponseBody
    public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
        Map<String, Object> body = getErrorAttributes(request, getTraceParameter(request));
        HttpStatus status = getStatus(request);
        return new ResponseEntity<Map<String, Object>>(body, status);
    }

    /**
     * Returns the path of the error page.
     *
     * @return the error path
     */
    @Override
    public String getErrorPath() {
        return ERROR_PATH;
    }


    private boolean getTraceParameter(HttpServletRequest request) {
        String parameter = request.getParameter("trace");
        if (parameter == null) {
            return false;
        }
        return !"false".equals(parameter.toLowerCase());
    }

    private Map<String, Object> getErrorAttributes(HttpServletRequest request,
                                                   boolean includeStackTrace) {
        RequestAttributes requestAttributes = new ServletRequestAttributes(request);
        return this.errorAttributes.getErrorAttributes(requestAttributes,
                includeStackTrace);
    }

    private HttpStatus getStatus(HttpServletRequest request) {
        Integer statusCode = (Integer) request
                .getAttribute("javax.servlet.error.status_code");
        if (statusCode != null) {
            try {
                return HttpStatus.valueOf(statusCode);
            }
            catch (Exception ex) {
            }
        }
        return HttpStatus.INTERNAL_SERVER_ERROR;
    }
}

উপরের ক্লাসটি স্প্রিংস বেসিক এরিরকন্ট্রোলার শ্রেণীর উপর ভিত্তি করে ।

আপনি উপরের ErrorControllerমতো @Configurationফাইলটিতে ইনস্ট্যান্ট করতে পারেন :

 @Autowired
 private ErrorAttributes errorAttributes;

 @Bean
 public AppErrorController appErrorController(){return new AppErrorController(errorAttributes);}

আপনি ত্রুটিঅ্যাট্রিবিউটগুলিErrorAttributes প্রয়োগ করে ডিফল্টকে ওভাররাইড চয়ন করতে পারেন । তবে বেশিরভাগ ক্ষেত্রে ডিফল্টঅরআর্ট্রিবিউটগুলিই যথেষ্ট।


1
BasicErrorControllerক্লাস 404 এর সাথে আপনার লিঙ্ক ।
স্টিফেন

@ ওওবাদ: এর লিঙ্কটি BasicErrorControllerএখন আর ভাল নয়, আপনি আপডেট করতে পারবেন?
HDJEMAI

1
লিঙ্কটি BasicErrorControllerএখন ঠিক করা হয়েছে।
axiopisty

15

আমার ক্ষেত্রে নিয়ামক শ্রেণীর সাথে মন্তব্য করা হয়েছিল @Controller। সমস্যার @RestControllerসমাধানের জন্য এটি পরিবর্তন করা । মূলত @RestControllerহয় @Controller + @ResponseBody হয় ব্যবহার তাই @RestController, অথবা @Controllerসঙ্গে @ResponseBodyপ্রতিটি পদ্ধতির সঙ্গে টীকা।

কিছু দরকারী নোট এখানে: https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/


এটি কাজ করে, তবে উদাহরণ অনুসারে সমস্ত ইন্টারনেটের বেসিক কনফিগারেশনটি @ নিয়ন্ত্রণকারী সাথে কাজ করা উচিত। যে কোনও সংস্থা এই কারণ সম্পর্কে অবগত কেবলমাত্র রেস্টকন্ট্রোলার কেন কাজ করছে?
সুপারনোভা

@RestControllerএটির সাথে আপনার শ্রেণিটি বেনিফিট করার @ResponseBodyসময় @Controllerস্পষ্টভাবে টীকা যুক্ত করা হয়, তবে আপনি যদি টীকাটি ব্যবহার করছেন , আপনাকে অবশ্যই স্পষ্টভাবে এই টীকাটি নিজেকে যুক্ত করতে হবে।
রবিন কেশকিসারকা

10

আমার ক্ষেত্রে এটি প্যাকেজ পজিশনের কারণে, যার অর্থ নিয়ামকের প্যাকেজটি অবশ্যই মূল শ্রেণীর প্যাকেজের উপরে থাকতে হবে

আমার প্রধান শ্রেণীর প্যাকেজটি যদি package co.companyname.spring.tutorial;কোনও নিয়ামক প্যাকেজ থাকেpackage co.companyname.spring.tutorial.WHAT_EVER_HERE;

package co.companyname.spring.tutorial; // package for main class
@SpringBootApplication
public class FirstProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(FirstProjectApplication.class, args);
    }
}


package co.companyname.spring.tutorial.controllers; // package for controllers 

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController 
public class HelloController { 

@RequestMapping("/hello")  
public String hello() {   
 return "Hello, world"; 
 }}

ফিনিস কোডিং পরে বুট ড্যাশবোর্ড টিপুন

এখানে চিত্র বর্ণনা লিখুন

আপনার কন্ট্রোলার ম্যাপিং করছে কিনা তা নিশ্চিত করার জন্য একটি সর্বশেষ জিনিস যা কেবল কনসোল নয় আপনি যেন কোনওরকম স্মিলিয়ার দেখতে পান

Mapped "{[/hello]}" onto public java.lang.String co.companyname.spring.tutorial.controllers.HelloController.hello()

শুভ কোডিং


9

যখন একটি স্পষ্ট ত্রুটি পৃষ্ঠা সংজ্ঞায়িত না হয় এটি ঘটে। ত্রুটি পৃষ্ঠাটি সংজ্ঞায়িত করতে, একটি ভিউ দিয়ে ত্রুটির ম্যাপিং তৈরি করুন। উদাহরণস্বরূপ, কোনও ত্রুটির ক্ষেত্রে স্ট্রিং মানটিতে নীচের কোড মানচিত্রগুলি ফিরিয়ে দেওয়া হচ্ছে।

package com.rumango.controller;

import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class IndexController implements ErrorController{
    private final static String PATH = "/error";
    @Override
    @RequestMapping(PATH)
    @ResponseBody
    public String getErrorPath() {
        // TODO Auto-generated method stub
        return "No Mapping Found";
    }

}

আপনি কি আপনার কোডটিতে কিছু ব্যাখ্যা যোগ করতে পারেন? এটি কেন গুরুত্বপূর্ণ প্রশ্নগুলি সমাধান করে?
নিকো হাজেস

স্প্রিং বুটের সাথে সম্পর্কিত এই উত্তরে একটি উল্লেখযোগ্য বিষয় আছে যা প্রথমে আমাকে মাথা ব্যাথার কারণ করেছিল। স্প্রিংফ্রেমওয়ার্কের ত্রুটি নিয়ন্ত্রণকারী ইন্টারফেসটি কার্যকর করা গুরুত্বপূর্ণ। আপনি যদি এটি না করেই "/ ত্রুটি" তে ম্যাপযুক্ত একটি নিয়ামক এন্ডপয়েন্টটি তৈরি করেন আপনি পদ্ধতিটি ইতিমধ্যে ম্যাপ করা হয়েছে তা বলার ক্ষেত্রে একটি ত্রুটি পাবেন।
mmaynar1

8

নির্ভরতা যুক্ত করার চেষ্টা করুন।

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2
এটি আসলে কী করে?
স্টিলথ রাব্বি

আমি এই নির্ভরতা যুক্ত করেছি, এবং এটি কার্যকর হয়েছে। @ স্টিলথ রাব্বির মতো ... আমিও ভাবছি যে এটি আসলে কী করে।
twindham

@ স্টেথাল্যাব্বি এটি থাইমালিফ নামে একটি টেম্প্লেটিং ফ্রেমওয়ার্কের উপর নির্ভরতা যুক্ত করে, যা জেএসপির বিকল্প এবং পছন্দসই পদ্ধতি approach এই উত্তরটি একটি বাস্তব উত্তর নিচ নয়, নির্ভরতা প্রায় নিক্ষেপ করে না সাহায্যের কেহ যারা সত্যিই কোর ইস্যু আগ্রহী
খ্রিস্টান

5

আমি এই নির্ভরতা যুক্ত করেছি এবং এটি আমার সমস্যার সমাধান করেছে।

<dependency>
    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

আমার তত্ত্বটি এখানে: যদি আমরা "@ নিয়ন্ত্রণকারী" ব্যবহার করি, তবে কোনওভাবে বসন্তের জন্য আমাদের একটি নির্দিষ্ট টেম্পলেট ইঞ্জিন প্রয়োজন। এবং এই ক্ষেত্রে, থাইমালিফ। অতএব, বসন্ত-বুট-স্টার্টার-থাইমালিফ প্রয়োজন। আমরা যদি "@ রিস্টকন্ট্রোলার" ব্যবহার করি তবে স্প্রিং বুটের কোনও টেম্পলেট ইঞ্জিনের প্রয়োজন হবে না। এবং তাই, এটি থাইমালিফ ছাড়া কাজ করে।
ইয়োসি প্রমজায়

4

আমি কয়েক সপ্তাহের জন্য স্প্রিং বুট অ্যাপ্লিকেশন বিকাশ করছি .. এবং আমি নীচের মত একই ত্রুটি পেয়েছি;

হোয়াইটবেল ত্রুটি পৃষ্ঠা এই অ্যাপ্লিকেশনটিতে / ত্রুটির জন্য কোনও স্পষ্ট ম্যাপিং নেই, তাই আপনি এটিকে ফ্যালব্যাক হিসাবে দেখছেন। থু জানু 18 14:12:11 এএসটি 2018 একটি অপ্রত্যাশিত ত্রুটি হয়েছিল (টাইপ = পাওয়া যায়নি, স্থিতি = 404)। কোনও বার্তা উপলব্ধ নেই

যখন আমি এই ত্রুটিটি ম্যাসেজ পেয়েছি তখন বুঝতে পারলাম আমার কন্ট্রোলার বা রেস্ট কন্ট্রোলার ক্লাসটি আমার প্রকল্পে সংজ্ঞায়িত নোট। আমি বলতে চাই যে আমাদের সমস্ত কন্ট্রোলার প্যাকেজগুলি মূল শ্রেণীর সাথে একই প্যাকেজ নয় যা @ স্প্রিংবুট অ্যাপ্লিকেশন টীকা সহ অন্তর্ভুক্ত রয়েছে .. আমার অর্থ আপনার নিজের ক্লাসে @CompenderScan টিকাতে আপনার নিয়ন্ত্রণকারী প্যাকেজটির নাম যুক্ত করা দরকার যা @ স্প্রিংবুট অ্যাপ্লিকেশন টিকাটি অন্তর্ভুক্ত রয়েছে f আপনি যদি কোড লিখেন আপনার নীচের সমস্যার সমাধান হবে ... সর্বাধিক গুরুত্বপূর্ণ বিষয় হ'ল আপনার সমস্ত কন্ট্রোলারের প্যাকেজটি আপনাকে @ কম্পোনেন্টস্ক্যান টীকাতে যুক্ত করতে হবে যেমন আমি নীচে করেছি

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan({ "com.controller.package1, com.controller.package2, com.controller.package3, com.controller.packageN", "controller", "service" } // If our Controller class or Service class is not in the same packages we have //to add packages's name like this...directory(package) with main class
public class MainApp {
    public static void main(String[] args) {
        SpringApplication.run(MainApp.class, args);
    }
}

আমি আশা করি এই কোডগুলি কাউকে সহায়তা করবে ...

আপনি যদি এই ত্রুটিটি সমাধান করার জন্য অন্য কোনও উপায় খুঁজে পান বা আমার কাছে আপনার কাছে কিছু পরামর্শ থাকে তবে দয়া করে মন্তব্যে লিখুন ... ধন্যবাদ ...


4

মূল শ্রেণিতে, "@ স্প্রিংবুট অ্যাপ্লিকেশন" কনফিগারেশনের পরে কোনও যুক্তি ছাড়াই "@ কম্পোনেন্টস্ক্যান" যুক্ত করে আমার পক্ষে কাজ করেছেন !!!

প্রধান শ্রেণি:

@SpringBootApplication
@ComponentScan
public class CommentStoreApplication {

    public static void main(String[] args) {
        SpringApplication.run(CommentStoreApplication.class, args);

    }
}

রেস্ট কন্ট্রোলার ক্লাস:

@RestController
public class CommentStoreApp {

    @RequestMapping("/") 
    public String hello() {
        return "Hello World!";
    }
}

পিএস: অ্যাপ্লিকেশন চালু করার আগে এমভিএন ক্লিন এবং এমভিএন ইনস্টল কমান্ডগুলি চালাবেন না


4

পার্টিতে বেশ দেরি। বসন্তের অফিসিয়াল ডকুমেন্টেশন অনুসারে "স্প্রিং বুট একটি হোয়াইটবেল ত্রুটি পৃষ্ঠা ইনস্টল করে যা আপনি কোনও সার্ভার ত্রুটির সম্মুখীন হলে ব্রাউজার ক্লায়েন্টে দেখতে পান।" https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-customize-the-whitelabel-error-page

  1. আপনি সেট করে বৈশিষ্ট্যটি অক্ষম করতে পারবেন server.error.whitelabel.enabled=falseমধ্যে application.yml বা application.properties ফাইল।

২. প্রস্তাবিত উপায়ে আপনার ত্রুটি পৃষ্ঠা সেট করা হয়েছে যাতে শেষ ব্যবহারকারী বুঝতে পারে। অধীনে সম্পদ / টেমপ্লেট ফোল্ডারের একটি তৈরি error.html ফাইল এবং যোগ নির্ভরতা pom.xml ফাইল

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

স্প্রিং স্বয়ংক্রিয়ভাবে ত্রুটি html পৃষ্ঠাটি ডিফল্ট ত্রুটি টেম্পলেট হিসাবে বেছে নেবে। দ্রষ্টব্য: - নির্ভরতা যুক্ত করার পরে maven প্রকল্প আপডেট করতে ভুলবেন না।


3

আপনি সম্ভবত ত্রুটি পেয়ে যাচ্ছেন

"এই অ্যাপ্লিকেশনটিতে / ত্রুটির জন্য সুস্পষ্ট ম্যাপিং নেই, সুতরাং আপনি এটিকে ফ্যালব্যাক হিসাবে দেখছেন।"

এর কারণ এটি আপনার নিয়ামক এবং পরিষেবা ক্লাসগুলি স্ক্যান করছে না যা আপনাকে আপনার প্রধান () শ্রেণিতে এভাবে নির্দিষ্ট করতে হবে,

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
**@ComponentScan({"com.example.demo", "controller", "service"})**
public class SpringBootMvcExample1Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootMvcExample1Application.class, args);
    }
}

দ্রষ্টব্য: এখানে, আমি স্ক্যান করার জন্য ডেমো, নিয়ন্ত্রক এবং পরিষেবাগুলির মতো বিভিন্ন ক্লাস নির্দিষ্ট করেছি তবে কেবল এটি সঠিকভাবে কাজ করবে।


3

আপনাকে প্যাকেজগুলি এমনভাবে সংগঠিত করতে হবে যাতে আপনার অন্যান্য সমস্ত প্যাকেজের পিতা সর্বজনীন স্ট্যাটিক মেইন (বা যেখানে আপনি @ স্প্রিংবুট অ্যাপ্লিকেশন লিখেছিলেন) ধারণ করে package


- com.mypackage + name অ্যাপ্লিকেশন.জভা - com.mypachage.model - com.mypachage.controller - com.mypachage.dao
সাকজেক

3

ডিফল্টরূপে বসন্ত বুট শিম সংজ্ঞা জন্য বর্তমান প্যাকেজ স্ক্যান করবে। সুতরাং যদি আপনার বর্তমান প্যাকেজ যেখানে প্রধান শ্রেণীর সংজ্ঞা দেওয়া আছে এবং নিয়ামক প্যাকেজটি একই নয় বা নিয়ামক প্যাকেজটি আপনার প্রধান অ্যাপ্লিকেশন প্যাকেজের চাইল্ড প্যাকেজ নয় তবে এটি নিয়ামকটিকে স্ক্যান করবে না। এই সমস্যাটি সমাধান করার জন্য একটিতে প্রধান প্যাকেজে শিম সংজ্ঞা জন্য প্যাকেজগুলির তালিকা অন্তর্ভুক্ত থাকতে পারে

@SpringBootApplication(scanBasePackages = {"com.module.restapi1.controller"})

বা প্যাকেজটির একটি শ্রেণিবিন্যাস তৈরি করুন যেখানে শিশু প্যাকেজটি মূল প্যাকেজ থেকে প্রাপ্ত

package com.module.restapi;
package com.module.restapi.controller

2

সমস্যাটি হ'ল আপনি লোকালহোস্টে: 8080 / লোকালহোস্টের পরিবর্তে: 8080 / গাইডে উল্লিখিত আপলোড করুন। স্প্রিং বুটের একটি ডিফল্ট ত্রুটি পৃষ্ঠা ব্যবহৃত হয় যখন আপনি সার্ভারের সুনির্দিষ্ট বিবরণ (যা সুরক্ষা ঝুঁকি হিসাবে দেখা যেতে পারে) এড়াতে কোনও অপরিজ্ঞাত রুটে নেভিগেট করেন।

আপনার বিকল্পগুলি হ'ল: ডান পৃষ্ঠাটি দেখুন, নিজের অবতরণ পৃষ্ঠা যুক্ত করুন বা সাদা ত্রুটি পৃষ্ঠাটি ওভাররাইড করুন

এই নির্দিষ্ট পরিস্থিতিটিকে সরল করার জন্য, আমি গাইডটি আপডেট করেছি যাতে এটি / আপলোডের পরিবর্তে / ব্যবহার করে।


2

আমি জানি এটি প্রশ্নের সঠিক উত্তর নয়, তবে এই প্রশ্নটি প্রথমে যা গুগলে প্রকাশিত হয় :)

সোয়াগার ইউআই অ্যাক্সেস করার চেষ্টা করার সময় সমস্যা ("এই অ্যাপ্লিকেশনটিতে / ত্রুটির জন্য স্পষ্টভাবে ম্যাপিং নেই") উপস্থিত হয়।

আমার ক্ষেত্রে সমস্যাগুলি @ রিস্টকন্ট্রোলার ("/ শেষ পয়েন্ট") দ্বারা সৃষ্ট হয়েছিল, যা সোয়াগার দ্বারা সঠিকভাবে পরিচালিত হয় না।

সুতরাং, এর ফলে ত্রুটি হয়েছে:

@RestController("/endpoint")
public class EndpointController {

এবং এটা ঠিক ছিল

@RestController
@RequestMapping("/endpoint")
public class EndpointController {

2

আপনি যদি আপনার নিয়ামক শ্রেণীর আমদানি আমদানির উপরে org.springframework.web.bind.annotation.RestController এর উপরে @RestController টিকাটি ভুলে যান তবে এটি ঘটতে পারে;

এবং নীচে হিসাবে টীকা যুক্ত করুন

নীচের সহজ উদাহরণ উল্লেখ করুন

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;


@RestController
public class HelloController {
@RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }

}


1

আমিও একই ত্রুটি পেয়েছি এবং আমার pom.xML এ নীচের নির্ভরতা যুক্ত করে ত্রুটিটি সমাধান করতে সক্ষম হয়েছি।

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

কারণটি হ'ল আমরা জেএসপিটিকে ভিউ হিসাবে ব্যবহার করছি। স্প্রিং বুট স্টার্টার ওয়েবের জন্য ডিফল্ট এম্বেড করা সার্লেট কন্টেইনারটি টমক্যাট। জেএসপি'র জন্য সমর্থন সক্ষম করতে, আমাদের টমক্যাট-এম্বেড-জাপারের উপর নির্ভরতা যুক্ত করতে হবে।

আমার ক্ষেত্রে আমি নিয়ামকের কাছ থেকে জেএসপি ফিরিয়ে দিচ্ছিলাম। আশা করি এই উত্তরটি একই সমস্যার সাথে লড়াই করে এমন কাউকে সহায়তা করবে।


1

আমি একই সমস্যার মুখোমুখি হয়েছি, গ্রেড ব্যবহার করে এবং এটি নিম্নলিখিত নির্ভরতাগুলি যুক্ত করার সমাধান হয়েছে-

compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
compile('org.apache.tomcat.embed:tomcat-embed-jasper')

এর আগে আমি একই ত্রুটির কারণে সর্বশেষটি মিস করছি।


আমার একই সমস্যা ছিল এবং আমি পম.এক্সএমএলে টমক্যাট-এম্বেড-জ্যাস্পার প্লাগইন অনুপস্থিত। এবং টমক্যাট-এম্বেড-জ্যাস্পার jsp রেন্ডারিংয়ের জন্য গুরুত্বপূর্ণ।
রিনিলনাথ

Boraji.com/… , টমক্যাট-এম্বেড-
জ্যাস্পার

1

আমি এই সমস্যার মুখোমুখি হয়েছি এবং পরে বুঝতে পেরেছিলাম যে ক্লাসে আমি @Configurationটীকাটি অনুপস্থিত MvcConfigযা মূলত ViewControllersএবং এর জন্য ম্যাপিং করে setViewNames

ফাইলটির বিষয়বস্তু এখানে:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
**@Configuration**
public class MvcConfig implements WebMvcConfigurer{
   public void addViewControllers(ViewControllerRegistry registry)
   {
      registry.addViewController("/").setViewName("login");
      registry.addViewController("/login").setViewName("login");
      registry.addViewController("/dashboard").setViewName("dashboard");
   }
}

আশা করি এটি কারও সাহায্য করবে !!


এটা আমার জন্য এটি।
অ্যান্টনি ওকোথ

1

নির্ভরতার তালিকায় আপনার জাফার এবং জেএসটিএল রয়েছে তা নিশ্চিত করুন:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

এখানে একটি কার্যনির্বাহী স্টার্টার প্রকল্প রয়েছে - https://github.com/spring-pro پروژې/spring-boot/tree/master/spring-boot-sample/spring-boot-sample-web- jsp

লেখক: বিজু কুঞ্জুমেন


1

আমাকে এইভাবে উল্লেখ করতে হবে এবং প্যাকেজগুলিকে রেফারেন্স দিতে হবে এবং এটি কার্যকর হয়েছে। আপনি @EnableAutoConfigurationএই টিকাটি বাদ দিতে পারেন তবে আমার জন্য কোনও ডিবি সম্পর্কিত অবক্ষয়কে বাইপাস করা প্রয়োজন।

@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@ComponentScan(basePackages = {"your package 1", "your package2"})

public class CommentStoreApplication {

    public static void main(String[] args) {
        SpringApplication.run(CommentStoreApplication.class, args);

    }
}

1

প্রধান শ্রেণীর আপনার অ্যাপ্লিকেশন প্যাকেজ গাছের কাঠামোর বাইরে হওয়া দরকার । উদাহরণ স্বরূপ: উদাহরণ


0

এই ধরণের সমস্যা সমাধানের জন্য আমি যা করেছি তা হ'ল এমভিসিসিফাইগ ক্লাসে অ্যানোটেশন @ কনফিগারেশন উল্লেখ করা ।

এটার মত :

package com.example;

/**
 * Created by sartika.s.hasibuan on 1/10/2017.
 */
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@EnableAutoConfiguration
@Configuration
@ComponentScan
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/home").setViewName("home");
        registry.addViewController("/").setViewName("home");
        registry.addViewController("/hello").setViewName("hello");
        registry.addViewController("/login").setViewName("login");
    }

}

0

আমারও অনুরূপ ভুল ছিল, আমি স্প্রিং বুট এবং বেগ ব্যবহার করি, আমার সমাধানটি ফাইল অ্যাপ্লিকেশন পরীক্ষা করা উচিত rop


0

আমার ক্ষেত্রে, ম্যাভেনের সাথে প্রথমে চালানোর পরে ইন্টেলিজের মধ্যে থেকে স্প্রিং অ্যাপ্লিকেশন চালানোর সময় এই সমস্যা দেখা দেয়।

সমস্যা সমাধানের জন্য, আমি প্রথমে দৌড়েছি mvn clean। তারপরে আমি ইনটেলিজেজের মধ্যে থেকে স্প্রিং অ্যাপ্লিকেশন চালাচ্ছি।


0

আপনার মেইন নিশ্চিত করুন। ক্লাসটি আপনার নিয়ন্ত্রকদের শীর্ষে থাকা উচিত। নিম্নলিখিত উদাহরণের ক্ষেত্রে:

মেইন.ক্লাস রয়েছে:

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

EmployeeController। ক্লাস সমন্বিত:

@RestController
public class EmployeeController {
    @InitBinder
    public void setAllowedFields(WebDataBinder dataBinder) {
        dataBinder.setDisallowedFields("id");
    }

    @RequestMapping(value = "/employee/save", method = RequestMethod.GET)
    public String save(){
        Employee newEmp = new Employee();
        newEmp.setAge(25);
        newEmp.setFirstName("Pikachu");
        newEmp.setId(100);
        return "Name: " + newEmp.getFirstName() + ", Age: " + newEmp.getAge() + ", Id = " + newEmp.getId();
    }
}

যদি আপনার মূল শ্রেণিটি মূল ফোল্ডারে থাকে, ঠিক এই পথের মতো: {প্রকল্পের নাম} / src / main / java / main তবে আপনার প্রধান শ্রেণীর নীচে আপনার নিয়ামকরা নিশ্চিত হন। উদাহরণস্বরূপ {প্রকল্পের নাম} / এসআরসি / প্রধান / জাভা / প্রধান / নিয়ন্ত্রক


0

আপনার জাভা ফাইলে (বলুন: ভাইপার জাজা) প্রধান শ্রেণি যুক্ত: "@RestController" এবং @RequestMapping ("/")

@SpringBootApplication
@RestController
public class Viper {

  @RequestMapping("/")

   public String home(){
          return "This is what i was looking for";                      
     }

public static void main( String[] args){

   SpringApplication.run(Viper.class , args);
}

}

0

আপনি @ রিস্টকন্ট্রোলার টিকা সহ কন্ট্রোলার ক্লাসটি চিহ্নিত করেছেন কিনা তা পরীক্ষা করে দেখুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.