'com.android.support:support-v4' dependency issue - reactjs
I need to integrate react-native-beacons-manager to my react-native project on PhpStorm, so i installed the library using the command "yarn install react-native-beacons-manager" and then link it to my project using the command "react-native link react-native-beacons-manager". But now, when i try running my build, the following message is shown:
> Android dependency 'com.android.support:support-v4' has different version for the compile (21.0.3) and runtime (26.1.0) classpath. You should manually set the same version via DependencyResolution
app\build.gradle:
apply plugin: "com.android.application"
import com.android.build.OutputFile
project.ext.react = [
entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
/**
* Set this to true to create two separate APKs instead of one:
* - An APK that only works on ARM devices
* - An APK that only works on x86 devices
* The advantage is the size of the APK is reduced by about 4MB.
* Upload all the APKs to the Play Store and people will download
* the correct one based on the CPU architecture of their device.
*/
def enableSeparateBuildPerCPUArchitecture = false
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.mapapp"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86", "arm64-v8a"
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
}
dependencies {
implementation project(':react-native-beacons-manager')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:+" // From node_modules
implementation project(':react-native-maps')
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
settings.gradle:
rootProject.name = 'mapapp'
include ':react-native-beacons-manager'
project(':react-native-beacons-manager').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-beacons-manager/android')
include ':react-native-maps'
project(':react-native-maps').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-maps/lib/android')
include ':app'
MainApplication.java:
package com.mapapp;
import android.app.Application;
import com.facebook.react.ReactApplication;
import com.mackentoch.beaconsandroid.BeaconsAndroidPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.airbnb.android.react.maps.MapsPackage;
import java.util.Arrays;
import java.util.List;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
#Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
#Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new BeaconsAndroidPackage(),
new MapsPackage()
);
}
#Override
protected String getJSMainModuleName() {
return "index";
}
};
#Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
#Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
android\build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext {
buildToolsVersion = "28.0.2"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 27
supportLibVersion = "28.0.0"
}
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
google()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
task wrapper(type: Wrapper) {
gradleVersion = '4.7'
distributionUrl = distributionUrl.replace("bin", "all")
}
My Android version is 8.1.0.
Edit: When i applied the code from abhinandan sharma, the following message was shown:
> Task :app:compileDebugJavaWithJavac FAILED
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainActivity.java:3: error
: cannot find symbol
import com.facebook.react.ReactActivity;
^
symbol: class ReactActivity
location: package com.facebook.react
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainActivity.java:5: error
: cannot find symbol
public class MainActivity extends ReactActivity {
^
symbol: class ReactActivity
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainApplication.java:5: er
ror: cannot find symbol
import com.facebook.react.ReactApplication;
^
symbol: class ReactApplication
location: package com.facebook.react
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainApplication.java:7: er
ror: cannot find symbol
import com.facebook.react.ReactNativeHost;
^
symbol: class ReactNativeHost
location: package com.facebook.react
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainApplication.java:17: e
rror: cannot find symbol
public class MainApplication extends Application implements ReactApplication {
^
symbol: class ReactApplication
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainApplication.java:19: e
rror: cannot find symbol
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
^
symbol: class ReactNativeHost
location: class MainApplication
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainApplication.java:41: e
rror: cannot find symbol
public ReactNativeHost getReactNativeHost() {
^
symbol: class ReactNativeHost
location: class MainApplication
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainActivity.java:11: erro
r: method does not override or implement a method from a supertype
#Override
^
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainApplication.java:19: e
rror: cannot find symbol
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
^
symbol: class ReactNativeHost
location: class MainApplication
C:\Users\Vex\PhpstormProjects\mapapp\android\app\src\main\java\com\mapapp\MainApplication.java:40: e
rror: method does not override or implement a method from a supertype
#Override
^
10 errors
Add this in your build.gradle file
android -> build.gradle
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
}
}
Hope it Helps !
Related
replacement for camel cxfbean
we are currently struggling with updating our legacy service (non spring, jee + deltaspike, weld) and it's dependencies. We try to upgrade from camel 2.16.2 to 3.x (due to java 11 compatibility). We have already read through the migration guide several times, but could not find any reference to your replacement of the cxfbean component. e.g.: public class MonitoringRoute extends RouteBuilder { #Override public void configure() throws Exception { from("servlet:///monitoring?matchOnUriPrefix=true") .to("cxfbean:monitoringService") .setId("MonitoringRoute"); } } #Named("monitoringService") public class MonitoringService implements MonitoringAPI { #Override public String status() { return "OK"; } } import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; public interface MonitoringAPI { #GET #Path("status") #Produces(MediaType.TEXT_PLAIN) String status(); } We already tried cxfrs:monitoringService, but this will led to "Uri is not absolute" exception. Any idea to replace cxfbean properly?
Whitelabel Error Page error (Spring Boot + React)
localhost:9000 is opening fine on the browser. And if I navigate to a link from the menu like localhost:9000/about, it is working fine. But if I hit localhost:9000/about directly without going to localhost:9000 then nothing happens on the local and if I do the same on server, following error is produced: Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Mon Feb 12 14:09:05 IST 2018 There was an unexpected error (type=Not Found, status=404). No message available Please help!!
This is happening because in your application you have not defined what your application should do when it will get url request localhost:9000. For every Request mapping you need to define the operation you want to perform. In your case for localhost:9000 you have to write what you want to do as you have done for local:9000/about. #RequestMapping("") #ResponseBody Function_For_HandlingRequest{}
When you hit http://localhost:9090/about directly, SpringBoot redirect To a /login.html. So, Redirect every page to index.html . https://github.com/geowarin/boot-react/blob/master/backend/src/main/java/react/config/SinglePageAppConfig.java The WebMvcConfigurer interface, starting with Spring 5, contains default implementations for all its methods. As a result, the abstract adapter (WebMvcConfigurerAdapter) class was marked as deprecated. package your.package.config; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.util.StringUtils; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.resource.ResourceResolver; import org.springframework.web.servlet.resource.ResourceResolverChain; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.Arrays; import java.util.List; /** * Redirects every page to index.html * Used to handle the router */ #Configuration public class SinglePageAppConfig implements WebMvcConfigurer { #Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations("classpath:/static/") .resourceChain(false) .addResolver(new PushStateResourceResolver()); } private class PushStateResourceResolver implements ResourceResolver { private Resource index = new ClassPathResource("/static/index.html"); private List<String> handledExtensions = Arrays.asList("html", "js", "json", "csv", "css", "png", "svg", "eot", "ttf", "woff", "appcache", "jpg", "jpeg", "gif", "ico"); private List<String> ignoredPaths = Arrays.asList("api"); #Override public Resource resolveResource(HttpServletRequest request, String requestPath, List<? extends Resource> locations, ResourceResolverChain chain) { return resolve(requestPath, locations); } #Override public String resolveUrlPath(String resourcePath, List<? extends Resource> locations, ResourceResolverChain chain) { Resource resolvedResource = resolve(resourcePath, locations); if (resolvedResource == null) { return null; } try { return resolvedResource.getURL().toString(); } catch (IOException e) { return resolvedResource.getFilename(); } } private Resource resolve(String requestPath, List<? extends Resource> locations) { if (isIgnored(requestPath)) { return null; } if (isHandled(requestPath)) { return locations.stream() .map(loc -> createRelative(loc, requestPath)) .filter(resource -> resource != null && resource.exists()) .findFirst() .orElseGet(null); } return index; } private Resource createRelative(Resource resource, String relativePath) { try { return resource.createRelative(relativePath); } catch (IOException e) { return null; } } private boolean isIgnored(String path) { return ignoredPaths.contains(path); } private boolean isHandled(String path) { String extension = StringUtils.getFilenameExtension(path); return handledExtensions.stream().anyMatch(ext -> ext.equals(extension)); } } }
in Application #Bean public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() { return factory -> { ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html"); factory.addErrorPages(error404Page); }; } enter image description here
Can not find symbol Finder
I set up ButterKnife into Android Studio. project build.gradle: dependencies { classpath 'com.android.tools.build:gradle:2.2.1' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' app build.gradle: apply plugin: 'com.android.application' apply plugin: 'android-apt' ... buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } ... compile 'com.jakewharton:butterknife:8.4.0' apt 'com.jakewharton:butterknife-compiler:8.0.1' And I have this: Error:(6, 28) error: cannot find symbol class Finder in ..\DetailActivity$$ViewBinder.java I am trying: public class DetailActivity extends AppCompatActivity { #BindView(R.id.title_textview) TextView titleTextView; #Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); ButterKnife.bind(this); ... titleTextView.setText(movie.getTitle());
Ejb3 -Accessing Local Enterprise Beans Using the No-Interface View
I'm trying to learn EJB3, I created an EJB project with just a bean class: package com; import javax.ejb.Local; import javax.ejb.Stateless; #Stateless #LocalBean public class MyBean { public MyBean() { // TODO Auto-generated constructor stub } public String getMessage(){ return "Hello"; }; } I deployed this project on Jboss 6 , then i create a Java project (adding in the build path the ejbProject above and Jboss-client.jar to make RMI calls). for testing , this is the class i created: import javax.ejb.EJB; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import com.MyBean; public class LanceProgram { // #EJB //public static MyBean mybean; public static void main(String[] args) { Context ctx; try { ctx = new InitialContext(); MyBean exampleBean = (MyBean) ctx.lookup("MyBean"); System.out.println(exampleBean.getMessage()); } catch (NamingException e) { e.printStackTrace(); } } } Normally, when running this, i should have a reference to MyBean,but it's null and i have this error message (using JNDI lookup): Exception in thread "main" java.lang.ClassCastException: org.jnp.interfaces.NamingContext cannot be cast to com.MyBean at LanceProgram.main(LanceProgram.java:17) While with an EJB injection i have a NullPointerException ! this i my jndi.properties file specifications: java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=localhost:1099 java.naming.factory.url.pkgs=org.jboss.ejb.client.naming I'm trying to make a call to a bean which doesn't implements an interface. Thanks for helping
Cannot Unit Test Using Fongo fails in 4.1.4 - worked in 3.1.4
https://github.com/sanjuthomas/spring-data-mongodb I have try several examples such as the one above to understand how to unit test mongo applications using fongo. All the examples examples worked - including the one above but when I upgrade the pom to the latest releases supported in spring boot all the examples fail. It seems the application context is no longer getting loaded for the test. Is this unit test functionality broken or do I need to change the code? Below is the code that fails and used to work in Spring 3 - now the rule fails stating that a mongo instance does not exist in the context: package com.ourownjava.spring.data.mongo.repository; import static com.lordofthejars.nosqlunit.mongodb.MongoDbRule.MongoDbRuleBuilder.newMongoDbRule; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.foursquare.fongo.Fongo; import com.lordofthejars.nosqlunit.annotation.ShouldMatchDataSet; import com.lordofthejars.nosqlunit.annotation.UsingDataSet; import com.lordofthejars.nosqlunit.mongodb.MongoDbRule; import com.mongodb.Mongo; import com.ourownjava.spring.data.mongo.model.Trade; /** * Spring Data MongoDB Repository Unit testcase. * * #author ourownjava.com * */ #RunWith(SpringJUnit4ClassRunner.class) #ContextConfiguration public class TestTradeRepository { #Autowired private ApplicationContext applicationContext; #Rule public MongoDbRule mongoDbRule = newMongoDbRule().defaultSpringMongoDb( "trade-db"); #Autowired private TradeRepository tradeRepository; #Test #ShouldMatchDataSet(location = "/testData/trade-t1.json") public void shouldSaveTrade(){ tradeRepository.save(createTrade()); } #Test #UsingDataSet(locations = {"/testData/trade-t1.json"}) public void shouldFindByTraderId(){ final List<Trade> trades = tradeRepository.findByTraderId("papjac"); assertNotNull(trades); assertTrue(trades.size() > 0); assertEquals("papjac", trades.get(0).getTraderId()); } #Test #UsingDataSet(locations = {"/testData/trade-t1.json"}) public void shouldFindByExchangeCode(){ final List<Trade> trades = tradeRepository.findByExchangeCode("NYSE"); assertNotNull(trades); assertTrue(trades.size() > 0); assertEquals("NYSE", trades.get(0).getExchangeCode()); } private Trade createTrade(){ final Trade trade = new Trade(); trade.setId("t1"); trade.setTraderId("papjac"); trade.setExchangeCode("NYSE"); trade.setValue(90.3); return trade; } #Configuration #EnableMongoRepositories #ComponentScan(basePackageClasses = { TradeRepository.class }) static class MongoConfiguration extends AbstractMongoConfiguration { #Override protected String getDatabaseName() { return "trade-db"; } #Override public Mongo mongo() { return new Fongo("trade-test").getMongo(); } #Override protected String getMappingBasePackage() { return "com.ourownjava.spring.data.mongo"; } } }
You have to use Annotation #Bean for mongo() #Bean #Override public Mongo mongo() { return new Fongo("trade-test").getMongo(); }